@gdef@lbracecmd[\{]% @gdef@rbracecmd[\]% @endgroup
% Accents: , @.ringaccent @_udotaccent % Others are defined by plain TeX: ‘ ’ " ^ ~ = @<H. \let\, = \c \let\dotaccent = \. \def\ringaccent#1{{\accent23 #1 \let\tieaccent = \t \let\ubaraccent = \b \let\udotaccent = \d
% Other special characters: ¿ ¡ % Plain TeX defines: Å Æ Ø Œ Ł (and lowercase versions) ß. \def\questiondown{?‘ \def\exclamdown{!‘
% Dotless i and dotless j, used for accents. \def\imacro{i \def\jmacro{j \def\dotless#1{% \def\temp{#1% \ifx\temp\imacro \ptexi \else\ifx\temp\jmacro \j \else \errmessage{@dotless can be used only with i or j% \fi\fi
% forces normal size whitespace following. \def\:{\spacefactor=1000
%
forces a line break.
\def\*{\hfil\break\hbox{\ignorespaces
% . is an end-of-sentence period. \def\.{.\spacefactor=3000
% ... is an end-of-sentence ellipsis. \gdef\enddots{$\mathinner{\ldotp\ldotp\ldotp\ldotp$\spacefactor=3000
% ! is an end-of-sentence bang. \gdef\!{!\spacefactor=3000
% ? is an end-of-sentence query. \gdef\?{?\spacefactor=3000
% @w prevents a word break. Without the \leavevmode, @w at the % beginning of a paragraph, when TeX is still in vertical mode, would % produce a whole line of output instead of starting the paragraph. \def\w#1{\leavevmode\hbox{#1
%
...
forces ... to be all on one page, by enclosing % it in a TeX vbox. We use \vtop instead of \vbox to construct the box % to keep its height that of a normal line. According to the rules for % \topskip (p.114 of the TeXbook), the glue inserted is % max (\topskip - \ht (first item), 0). If that height is large, % therefore, no glue is inserted, and the space between the headline and % the text is small, which looks bad. % \def\group{\begingroup \ifnum\catcode13=\active \else \errhelp = \groupinvalidhelp \errmessage{
invalid in context where filling is enabled% \fi % % The \vtop we start below produces a box with normal height and large % depth; thus, TeX puts \baselineskip glue before it, and (when the % next line of text is done) \lineskip glue after it. (See p.82 of % the TeXbook.) Thus, space below is not quite equal to space % above. But it’s pretty close. \def\Egroup{% \egroup % End the \vtop. \endgroup % End the \group. % % \vtop\bgroup % We have to put a strut on the last line in case the
is in % the midst of an example, rather than completely enclosing it. % Otherwise, the interline space between the last line of the group % and the first line afterwards is too small. But we can’t put the % strut in \Egroup, since there it would be on a line by itself. % Hence this just inserts a strut at the beginning of each line. \everypar = {\strut% % % Since we have a strut on every line, we don’t need any of TeX’s % normal interline spacing. \offinterlineskip % % OK, but now we have to do something about blank % lines in the input in @example-like environments, which normally % just turn into \lisppar, which will insert no space now that we’ve % turned off the interline space. Simplest is to make them be an % empty paragraph. \ifx\par\lisppar \edef\par{\leavevmode \par% % % Reset ^^M’s definition to new definition of \par. \obeylines \fi % % Do %
, where each end-of-line in the input causes an % end-of-line in the output. We don't want the end-of-line after % the `
' to put extra space in the output. Since
% should appear on a line by itself (according to the Texinfo % manual), we don't worry about eating any user text. \comment % % TeX puts in an \escapechar (i.e., `)' at the beginning of the help % message, so this ends up printing `
can only ...'. % \newhelp\groupinvalidhelp{% group can only be used in environments such as
,^^J% where each line of input produces a line of output. % % forces a page break if there is not space-in-mils remaining. \newdimen\mil \mil=0.001in \def\need{\parsearg\needx % Old definition--didn't work. %\def\needx #1{\par % %% This method tries to make TeX break the page naturally %% if the depth of the box does not fit. %{\baselineskip=0pt% %\vtop to #1\mil{\vfil\kern -#1\mil\penalty 10000 %\prevdepth=-1000pt % \def\needx#1{% % Go into vertical mode, so we don't make a big box in the middle of a % paragraph. \par % % Don't add any leading before our big empty box, but allow a page % break, since the best break might be right here. \allowbreak \nointerlineskip \vtop to #1\mil{\vfil% % % TeX does not even consider page breaks if a penalty added to the % main vertical list is 10000 or more. But in order to see if the % empty box we just added fits on the page, we must make it consider % page breaks. On the other hand, we don't want to actually break the % page after the empty box. So we use a penalty of 9999. % % There is an extremely small chance that TeX will actually break the % page at this \penalty, if there are no other feasible breakpoints in % sight. (If the user is using lots of big
commands, which % almost-but-not-quite fill up a page, TeX will have a hard time doing % good page breaking, for example.) However, I could not construct an % example where a page broke at this \penalty; if it happens in a real % document, then we can reconsider our strategy. \penalty9999 % % Back up by the size of the box, whether we did a page break or not. \kern -#1\mil % % Do not allow a page break right after this kern. \nobreak % @br forces paragraph break \let\br = \par % … output some dots \def\dots{$\ldots$ % forces the start of a new page \def\page{\par\vfill\supereject % text.... % outputs text on separate line in roman font, starting at standard page margin % This records the amount of indent in the innermost environment. % That's how much \exdent should take out. \newskip\exdentamount % This defn is used inside fill environments such as
\def\exdent{\parsearg\exdentyyy \def\exdentyyy #1{{\hfil\break\hbox{\kern -\exdentamount{\rm#1\hfil\break % This defn is used inside nofill environments such as
. \def\nofillexdent{\parsearg\nofillexdentyyy \def\nofillexdentyyy #1{{\advance \leftskip by -\exdentamount \leftline{\hskip\leftskip{\rm#1 % @inmargin{TEXT} puts TEXT in the margin next to the current paragraph. \def\inmargin#1{% \strut\vadjust{\nobreak\kern-\strutdepth \vtop to \strutdepth{\baselineskip\strutdepth\vss \llap{\rightskip=\inmarginspacing \vbox{\noindent #1\null \newskip\inmarginspacing \inmarginspacing=1cm \def\strutdepth{\dp\strutbox %\hbox{{\rm#1\hfil\break % % Allow normal characters that we make active in the argument (a file name). \def\include{\begingroup \catcode`\\=12 \catcode`~=12 \catcode`^=12 \catcode`_=12 \catcode`|=12 \catcode`<=12 \catcode`>=12 \catcode`+=12 \parsearg\includezzz % Restore active chars for included file. \def\includezzz#1{\endgroup\begingroup % Read the included file in a group so nested \def\thisfile{#1% \input\thisfile \endgroup \def\thisfile{ % line outputs that line, centered \def\center{\parsearg\centerzzz \def\centerzzz #1{{\advance\hsize by -\leftskip \advance\hsize by -\rightskip \centerline{#1 % \def\sp{\parsearg\spxxx \def\spxxx #1{\vskip #1\baselineskip % % % is another way to write a comment \def\comment{\catcode 64=\other \catcode 123=\other \catcode 125=\other% \parsearg \commentxxx \def\commentxxx #1{\catcode 64=0 \catcode 123=1 \catcode 125=2 \let\c=\comment % \let\paragraphindent=\comment % Prevent errors for section commands. % Used in . % \def\ignore{\doignore{ignore % Also ignore
This document was generated on June 11, 2022 using texi2html 5.0.